برنامه : محاسبه ی log و Ln اعداد.
الگوریتم:
برای محاسبه لگاریتم و تابع نمایی از تعریف ریاضی زیر استفاده می کنیم

و درنهایت

برای محاسبه ی این دنباله به تابع محاسبه توان که قبلا نوشتیم نیاز داریم.
.با نوشتن کد زیر در تابع Ln کار محاسبه ی دنباله رو انجام میدیم
2*( (1 / temp )* (power(t,2*n+1)) ) که temp =(2*n+1) ,t =(z-1)/(z+1)
دستور بالا تک جمله های دنباله ی بالا را به ترتیب از n=0 تا .... محاسبه و آنها را در متغیر result جمع می کند.
به این ترتیب Ln عدد محاسبه می شود و در نهایت در تابع Log با استفاده از فرمول ، لگاریتم را محاسبه می کنیم.
* حاصل جملات دنباله ی فوق به ازی n های بزرگتر ، کوچکتر می شود لذا با توجه به شرط حلقه ی While ،زمانی از حلقه ی While خارج می شیم که اختلاف جمله ی فعلی از جمله ی قبلی به حداقل که رسیده باشه.در اینجه یک ضربدر ده به توان منفی 11.(هرچه این مقدار کوچکتر باشد حاصل دقیق تر هست.)
برنامه ی محاسبه لگاریتم و تابع نمایی به زبان ++c |
double power(double x, int p);//x^p
double ln(double z) { double t =(z-1)/(z+1); double result=0,oldResult=1; int n=0; double temp=0; while((oldResult < result?result - oldResult:oldResult - result) > 0.00000000001) { oldResult = result; temp =(2*n+1); result =result + 2*( (1 / temp )* (power(t,2*n+1)) );
n=n+1; } return result;
}
double log(double x,double a) { return ln(x)/ln(a); } |
برنامه ی محاسبه لگاریتم و تابع نمایی به زبان #c |
double power(double x, int p);//x^p double ln(double z) { double t = (z - 1) / (z + 1); double result = 0, oldResult = 1; int n = 0; double temp = 0;
while ((oldResult < result ? result - oldResult : oldResult - result) > 0.000000000000001) { oldResult = result; temp = (2 * n + 1);
result = result + 2 * ((1 / temp) * (power(t, 2 * n + 1)));
n = n + 1; } return result;
}
double log(double x, double a) { return ln(x) / ln(a); } |
:: موضوعات مرتبط:
پروژه #c ,
پروژه طراحی الگورتم ,
,